package com.zenithmind.classroom.pojo.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * 进度更新DTO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "进度更新DTO")
public class ProgressUpdateDTO {

    /**
     * 用户ID
     */
    @Schema(description = "用户ID", example = "1234567890")
    private String userId;

    /**
     * 课程ID
     */
    @Schema(description = "课程ID", example = "1234567890")
    private String courseId;

    /**
     * 章节ID
     */
    @Schema(description = "章节ID", example = "1234567890")
    private String chapterId;

    /**
     * 课时ID
     */
    @Schema(description = "课时ID", example = "1234567890")
    private String lessonId;

    /**
     * 学习状态（0-未开始，1-学习中，2-已完成，3-已暂停）
     */
    @Schema(description = "学习状态（0-未开始，1-学习中，2-已完成，3-已暂停）", example = "1")
    private Integer status;

    /**
     * 学习进度百分比（0-100）
     */
    @Schema(description = "学习进度百分比（0-100）", example = "50")
    private Integer progressPercent;

    /**
     * 学习进度百分比（0-100） - 别名方法
     */
    public Integer getProgressPercentage() {
        return progressPercent;
    }

    public void setProgressPercentage(Integer progressPercentage) {
        this.progressPercent = progressPercentage;
    }

    /**
     * 观看时长（秒）
     */
    @Schema(description = "观看时长（秒）", example = "1800")
    private Integer watchTime;

    /**
     * 最后观看位置（秒）
     */
    @Schema(description = "最后观看位置（秒）", example = "900")
    private Integer lastPosition;

    /**
     * 学习次数增量
     */
    @Schema(description = "学习次数增量", example = "1")
    private Integer studyCountIncrement;

    /**
     * 学习时长增量（分钟）
     */
    @Schema(description = "学习时长增量（分钟）", example = "30")
    private Integer studyTimeIncrement;

    /**
     * 学习秒数 - 别名方法
     */
    public Integer getStudiedSeconds() {
        return watchTime;
    }

    public void setStudiedSeconds(Integer studiedSeconds) {
        this.watchTime = studiedSeconds;
    }

    /**
     * 学习设备类型（1:PC, 2:手机, 3:平板）
     */
    @Schema(description = "学习设备类型（1:PC, 2:手机, 3:平板）", example = "1")
    private Integer deviceType;

    /**
     * 学习质量评分（1-5星）
     */
    @Schema(description = "学习质量评分（1-5星）", example = "4")
    private Integer qualityScore;

    /**
     * 是否收藏（0-否，1-是）
     */
    @Schema(description = "是否收藏（0-否，1-是）", example = "1")
    private Integer isFavorite;

    /**
     * 学习笔记
     */
    @Schema(description = "学习笔记")
    private String notes;

    /**
     * 学习心得
     */
    @Schema(description = "学习心得")
    private String reflection;

    /**
     * 遇到的问题
     */
    @Schema(description = "遇到的问题")
    private String issues;

    /**
     * 学习评价
     */
    @Schema(description = "学习评价")
    private String review;
}
